<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 基本数据类型
        // a = 10; b = a; 怎么操作b都不会改变a

        // 引用数据类型
        // a = {age:1}; b = a; 操作b时会改变a



        // 基本数据类型 和 引用数据类型 在保存方式上 有差别

        // 基本数据类型：变量保存的就是这个数据本身
        // 引用数据类型：变量保存的只是一个(引用地址 指针 内存地址) 引用地址 指向内存中的这个数据对象

        // 就像 钱包就是一个变量容器  基本数据类型就好比现金放在包里
        // 引用数据类型 就好比银行卡 我把密码给别人了 别人花钱我银行卡里面的钱也会减少

        // 当我们把一个变量 赋值给 另外的一个变量时 赋值的仅仅是 变量存储的内容

        //  var str = msg; 当修改 str 时 ,msg 是不会有影响的

        // var temp = user;
        // 将user把保存的内存地址 赋值给了 str 一份,此时二者有同样的内存地址,指向 同一个内存中的数据
        // 通过temp去修改时 ,,,  也会影响到 user

        // 基本数据类型
        var msg = "hello";
        var str = msg;
        str = "不凡学院";
        // str 被修改时,,msg 并没有发生变化(受到影响)
        console.log(str); // '不凡学院'
        console.log(msg); // 'hello'

        // 引用数据类型
        var user = {
            name: "john",
            age: 24,
        };
        var temp = user;
        temp.age = 27;
        // temp 被修改时,,发现 user 这个对象也跟着变了(受到了影响)
        console.log(temp); // {name: 'john', age: 27}
        console.log(user); // {name: 'john', age: 27}

        // 判断两个对象 是否相等
        // 根据的是 内存地址(引用地址)是否相同

        var a = {};
        var b = {};
        console.log(a == b); // false
    </script>
</body>

</html>